The invention is generally related to the initialization of an electronic device such as an adaptor or other electronically controlled component in a data processing system, and in particular, to control over the retrieval of initialization code for execution by such an electronic device during initialization.
Programmable electronic devices often require some degree of initialization upon power up, or in response to reset operations initiated on such devices, so that the devices can assume a known operational state. For example, one example of a programmable electronic device is a network adaptor card, used in a computer to interface the computer with an external network.
A network adaptor card in a computer needs to be initialized whenever the computer is first powered up. Also, if the computer supports power management functions, the network adaptor card may be shut down periodically when not in use, and may need to be initialized when brought out of its xe2x80x9csleepingxe2x80x9d state. Some computers also support xe2x80x9chot swappingxe2x80x9d, whereby a network adaptor card may be removed and replaced while the computer is powered up, requiring the replacement card to be initialized upon installation in the computer.
Typically, a network adaptor card includes an embedded microcontroller that executes initialization program code during the initialization process. The initialization program code is stored in a non-volatile memory device, e.g., various types of read-only memory (ROM) solid state storage devices such as programmable read-only memories (PROM""s), electrically programmable read-only memories (EPROM""s), electrically erasable programmable read-only memories (EEPROM""s), etc. During initialization, the microcontroller retrieves and executes the initialization program code to perform the various operations necessary to initialize the adaptor.
Given the ongoing need for greater performance, it is often desirable to minimize the amount of time it takes to initialize an electronic device. In particular, the time that a particular electronic device takes during initialization can impact the overall performance of other electronic components, e.g., a computer in which the device is installed. As an example, a multi-user computer such as an AS/400 midrange computer (available from International Business Machines Corporation) often includes a number of network adaptor cards, as well as other input/output adaptors such as workstation controllers, storage controllers, display adaptors, etc., all of which require initialization. Initialization of each device, as well as of the overall computer, may take as long as several minutes or more, and as a consequence, it is often desirable to minimize the amount of time it takes to initialize each programmable electronic device.
One factor affecting the initialization time for a programmable electronic device is the access time of the non-volatile memory within which the initialization program code for the device is stored. Any memory device will have a minimum access time at which the device can be reliably operated without error, and maximum performance is obtained when the control logic that accesses the memory operates using this minimum access time.
It may be desirable in some circumstances to replace the non-volatile memories used in some programmable devices, e.g., to repair a defective part, or to upgrade the initialization program code stored therein to correct programming errors or to introduce new functionality. Given that the performance of non-volatile memories, like many electronic components, continues to improve, a replacement non-volatile memory may be capable of faster operation than the part being replaced. However, if the control logic in an electronic device is specifically programmed to operate solely with the original, slower memory, the faster capability of the replacement device is essentially wasted.
Some conventional control logic designs are capable of being specifically configured to operate with different access times to accommodate different speeds of non-volatile memories. Such designs typically utilize programmable configuration bits to select an operational access time at which to access a non-volatile memory. However, programming of configuration bits typically requires changes to the microcode, thus necessitating a recompile, and increasing the difficulty and effort required to replace a non-volatile memory.
Therefore, a significant need continues to exist in the art for a manner of controlling an operational access time for a non-volatile memory to minimize initialization time in an electronic device.
The invention addresses these and other problems associated with the prior art by providing a circuit arrangement and method of initializing an electronic device in which a non-volatile memory is dynamically tested prior to retrieving initialization program code to select an operational access time at which the initialization program code can be reliably retrieved from the non-volatile memory. Specifically, at least one test access is performed with the non-volatile memory to determine a satisfactory access time at which the non-volatile memory correctly processes the test access. Thereafter, initialization program code is retrieved from the non-volatile memory using an operational access time selected based upon the determined satisfactory access time. As such, through judicious selection of an appropriate operational access time, non-volatile memory devices having differing performance capabilities can be accessed in an optimal manner using the same memory control logic design, and without the need for specific customization or program code modifications.
These and other advantages and features, which characterize the invention, are set forth in the claims annexed hereto and forming a further part hereof. However, for a better understanding of the invention, and of the advantages and objectives attained through its use, reference should be made to the Drawings, and to the accompanying descriptive matter, in which there is described exemplary embodiments of the invention.